Software applications can perform a virtually limitless set of tasks today. Applications span all categories, from knowledge worker applications like MICROSOFT™ Word and Excel, to connectivity applications like email and instant messaging clients, to business applications like MICROSOFT™ Configuration Manager and BizTalk, to server applications like MICROSOFT™ Exchange, and so forth. Although ease of use is often a feature considered by software designers, due to the many functions that software applications provide, they cannot all work the same. Each application often involves user education to enable users to get the greatest benefit from the application and to learn each of the application's differentiating abilities.
Including instructional material directly within a software application has long been a common feature. Applications often provide a Help menu, F1 or other help invoking keystrokes, and context-sensitive help information. Help information has evolved from early information that resembled paper documentation (e.g., MICROSOFT™ HLP files with tables of contents and indexes like books) to more web-like content today with the rise of the Internet (e.g., MICROSOFT CHM files that include links, more visual content, and so forth). With the increase in continuously available Internet connections, many applications include online instructional material and client-side logic for combining both online and locally available help information.
Help information is often authored using specialized tools that receive static help content provided by technical writers. For example, MICROSOFT™ has for many years provided the Hypertext Markup Language (HTML) Help Workshop set of tools for producing HTML-based documentation. These tools often follow a document creation approach similar to word processing, where technical writers decide on topics for articles, create articles by writing content for them, and then organize the articles into hierarchies that represent some organizational system that seems sensible for the particular application (e.g., by user goal, by application features, and so forth). In some cases, the technical writers associate help context identifiers with identifiers set programmatically throughout the application so that when a user request context sensitive help an application can navigate the user quickly to an appropriate help article.
One problem with current software application instructional material is that it is very static in nature. Currently no content models provide an environment for creating interactive content and providing guidance to authors for creating and organizing structured information that is interactive in nature. Although an online component may allow frequent updating to add additional information, instructional material is still largely in the form of an article or reference guide to be read from beginning to end in hopes of solving the user's problem or educating the user about a particular topic. Although the help system of an application may know a context reference that identifies what feature the user is currently using, the application often does not know where the user is stuck, what information the user is very familiar with versus what information the user will still need to learn to complete a task, and so forth. Most of the burden is placed on the user to sift through material that may contain as much irrelevant information as relevant information. In addition, the user may have to refer back and forth to a current task and the instructional material with little indication other than scrolling to a particular position that the user has made any progress within the help information.
Prior solutions are limited in how they can address these problems. For example, the MICROSOFT™ Compiled HTML Help (CHM) file type provides a Table of Contents (TOC) in a left pane and displays associated content in a right pane after a user selects a TOC item. This format does not scale well to different content styles, formats, and design. For example, CHM is limited to a two-pane window, does not support interactive components such as buttons and other controls, does not support embedded video, and so on.